/*
 * Grupo: Dayana Souza Silva, Filipe Pires Guimaraes, Rafael Vieira Falcao
 * Mat.: 11211111, 113110873, 113111111
 */

package bolao.projeto.lp2;

import java.util.List;

/**
 * Sistema do bolao
 * @version 1.0
 * @author Dayana, Filipe, Rafael
 */
public class Sistema {
	//private Map<Integer, List<Aposta>> listaResultados;
	private int indexUsuarioAtual;
	private Jogador usuarioAtual;
	private List<Jogador> listaUsuarios;
	private Administrador admin = new Administrador();
	
	/**
	 * Autenticacao do login e senha
	 * @param login Login para autenticacao do usuario
	 * @param senha Senha para autenticacao do usuario, se o login existir no sistema
	 * @return <b>True</b> para login cadastrado e <b>False</b> para nao cadastrado
	 */
	public boolean autenticacao(String login, String senha){
		return (verificaLogin(login) && verificaSenha(senha)) ? true : false;
	}
	
	/**
	 * Cadastro de Jogadores e adicao a lista de jogadores
	 * @param login Login para o cadastro do jogador
	 * @param senha Senha para o cadastro do jogador
	 * @param email Email para o cadastro/recuperacao do jogador
	 * @throws Exception Excecao para a criacao de jogadores
	 */
	public void cadastrarJogador(String login, String senha, String email) throws Exception {
		listaUsuarios.add(new Jogador(login, senha, email));
	}

	/**
	 * Deleta o usuario logado da lista de jogadores
	 */
	public void deletarApostador() {
		if(listaUsuarios.contains(usuarioAtual)){
			listaUsuarios.remove(usuarioAtual);
			finalizarPrograma();
		}
	}

	/**
	 * Finaliza o programa
	 */
	public void finalizarPrograma() {
		// salva o programa em um arquivo
		System.exit(0);
	}

	/**
	 * Get do Usuario logado no sistema
	 * @return Retorna o Jogador, por extenso, logado no sistema
	 */
	public Jogador getUsuarioAtual() {
		return usuarioAtual;
	}
	
	// identifica o jogador Adm com index -1 e -2 para jogadores com login nao encontrados
	private boolean verificaLogin(String login) {
		if(admin.getLogin().equals(login)) {
			indexUsuarioAtual = -1;
			return true;
		}
		for(int i=0; i < listaUsuarios.size(); i++)
			if(listaUsuarios.get(i).getLogin().equals(login)) {
				indexUsuarioAtual = i;
				return true;
			}
		indexUsuarioAtual = -2;
		return false;
	}
	
	private boolean verificaSenha(String senha) {
		if(indexUsuarioAtual == -2) return false;
		if(indexUsuarioAtual == -1 && admin.getSenha().equals(senha)) { 
			usuarioAtual = admin;
			return true;
		} else if(listaUsuarios.get(indexUsuarioAtual).equals(senha)) {
			usuarioAtual = listaUsuarios.get(indexUsuarioAtual);
			return true;
		}
		return false;
	}
}
